<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--准备好一个容器-->
    <div id="test"></div>
    
    <!---引入react核心库-->
    <script type="text/javascript" src="./js/react.development.js"></script>
    <!--引入react-dom用于支持react操作dom-->
    <script type="text/javascript" src="./js/react-dom.development.js"></script>
    <!--引入babel用于将jsx转为js-->
    <script type="text/javascript" src="./js/babel.min.js"></script>
    <script type="text/javascript" src="./js/prop-types.js"></script>

    <script type="text/babel"> //此处一定要写
    
    //创建组件
   /* class Person extends React.Component{

        constructor(props){
            //构造器是否接收props，是否传递给super，取决于是否希望在构造器中通过this访问props
            //一般开发的时候都不写constructor
            super(props)
            console.log('constructor',this.props);
        }

        //对标签属性进行类型必要性限制
        static propTypes={
            name:PropTypes.string.isRequired,//限制name为必传，且为字符串
            sex:PropTypes.string,//限制sex为字符串
            age:PropTypes.number,//限制age为数值
        }

        static defaultProps={
            sex:'男',//默认为男
            age:18//默认为18
        }

        render(){
        const {name,age,sex}=this.props;
        //props是只读的
        //this.props.name="jack" //此行代码会报错，因为props是只读的

        return(
            <ul>
                <li>姓名:{name}</li>
                <li>性别:{sex}</li>
                <li>年龄:{age}</li>
            </ul>
        )
        }
    }
   */

    function Person(props){
        const {name,age,sex}=props
        return(
            <ul>
                <li>姓名:{name}</li>    
                <li>性别:{sex}</li>    
                <li>年龄:{age}</li>    
            </ul>
        )
    }

    //2.渲染虚拟DOM到页面
    ReactDOM.render(<Person name="hsd" sex="男" age={12}/>,document.getElementById("test"))

        
    </script>
</body>
</html>